package com.redepronik.negosys.invfac.entity;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import com.redepronik.negosys.rrhh.entity.Cliente;
import com.redepronik.negosys.rrhh.entity.Empleadocargo;

/**
 * The persistent class for the guiaremision database table.
 * 
 */
@Entity
@Table(schema = "invfac", name = "guiaremision")
@NamedQuery(name = "Guiaremision.findAll", query = "SELECT g FROM Guiaremision g")
public class Guiaremision implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@SequenceGenerator(allocationSize = 1, name = "GUIAREMISION_GUIAREMISIONID_GENERATOR", sequenceName = "INVFAC.GUIAREMISION_GUIAREMISIONID_SEQ")
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GUIAREMISION_GUIAREMISIONID_GENERATOR")
	@Column(unique = true, nullable = false)
	private Integer guiaremisionid;

	@Column(nullable = false, length = 25)
	private String codigodocumento;

	@Column(length = 50)
	private String aduana;

	// bi-directional many-to-one association to cliente
	@ManyToOne
	@JoinColumn(name = "clienteid")
	private Cliente cliente;

	// bi-directional many-to-one association to empleadoCargo
	@ManyToOne
	@JoinColumn(name = "transportistaid", nullable = false)
	private Empleadocargo transportistaid;

	@Temporal(TemporalType.DATE)
	@Column(nullable = false)
	private Date fechainicio;

	@Temporal(TemporalType.DATE)
	@Column(nullable = false)
	private Date fechaterminacion;

	@Column(length = 20)
	private String placa;

	@Column(nullable = false, length = 100)
	private String puntollegada;

	@Column(nullable = false, length = 100)
	private String puntopartida;

	@Column(nullable = false, length = 100)
	private String razonsocialdestinatario;

	// bi-directional many-to-one association to Detalleguiaremision
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "guiaremision")
	private List<Detalleguiaremision> detalleguiaremisions;

	// bi-directional many-to-one association to Detalleguiaremision
	@OneToMany(orphanRemoval = true, cascade = CascadeType.ALL, mappedBy = "guiaremision")
	private List<Egreso> egresos;

	// bi-directional many-to-one association to Motivotraslado
	@ManyToOne
	@JoinColumn(name = "motivotrasladoid", nullable = false)
	private Motivotraslado motivotraslado;

	public Guiaremision() {
	}

	public Detalleguiaremision addDetalleguiaremision(
			Detalleguiaremision detalleguiaremision) {
		getDetalleguiaremisions().add(detalleguiaremision);
		detalleguiaremision.setGuiaremision(this);

		return detalleguiaremision;
	}

	public Egreso addEgreso(Egreso egreso) {
		getEgresos().add(egreso);
		egreso.setGuiaremision(this);

		return egreso;
	}

	public String getAduana() {
		return this.aduana;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public String getCodigodocumento() {
		return codigodocumento;
	}

	public List<Detalleguiaremision> getDetalleguiaremisions() {
		return this.detalleguiaremisions;
	}

	public List<Egreso> getEgresos() {
		return egresos;
	}

	public Date getFechainicio() {
		return this.fechainicio;
	}

	public Date getFechaterminacion() {
		return this.fechaterminacion;
	}

	public Integer getGuiaremisionid() {
		return this.guiaremisionid;
	}

	public Motivotraslado getMotivotraslado() {
		return this.motivotraslado;
	}

	public String getPlaca() {
		return this.placa;
	}

	public String getPuntollegada() {
		return this.puntollegada;
	}

	public String getPuntopartida() {
		return this.puntopartida;
	}

	public String getRazonsocialdestinatario() {
		return this.razonsocialdestinatario;
	}

	public Empleadocargo getTransportistaid() {
		return transportistaid;
	}

	public Detalleguiaremision removeDetalleguiaremision(
			Detalleguiaremision detalleguiaremision) {
		getDetalleguiaremisions().remove(detalleguiaremision);
		detalleguiaremision.setGuiaremision(null);

		return detalleguiaremision;
	}

	public Egreso removeEgreso(Egreso egreso) {
		getEgresos().remove(egreso);
		egreso.setGuiaremision(null);

		return egreso;
	}

	public void setAduana(String aduana) {
		this.aduana = aduana;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public void setCodigodocumento(String codigodocumento) {
		this.codigodocumento = codigodocumento;
	}

	public void setDetalleguiaremisions(
			List<Detalleguiaremision> detalleguiaremisions) {
		this.detalleguiaremisions = detalleguiaremisions;
	}

	public void setEgresos(List<Egreso> egresos) {
		this.egresos = egresos;
	}

	public void setFechainicio(Date fechainicio) {
		this.fechainicio = fechainicio;
	}

	public void setFechaterminacion(Date fechaterminacion) {
		this.fechaterminacion = fechaterminacion;
	}

	public void setGuiaremisionid(Integer guiaremisionid) {
		this.guiaremisionid = guiaremisionid;
	}

	public void setMotivotraslado(Motivotraslado motivotraslado) {
		this.motivotraslado = motivotraslado;
	}

	public void setPlaca(String placa) {
		this.placa = placa;
	}

	public void setPuntollegada(String puntollegada) {
		this.puntollegada = puntollegada;
	}

	public void setPuntopartida(String puntopartida) {
		this.puntopartida = puntopartida;
	}

	public void setRazonsocialdestinatario(String razonsocialdestinatario) {
		this.razonsocialdestinatario = razonsocialdestinatario;
	}

	public void setTransportistaid(Empleadocargo transportistaid) {
		this.transportistaid = transportistaid;
	}

}